#include "comm.hpp"

int main()
{
    int shmid = GetShm();  // 获取已存在的共享内存
    // 将共享内存映射到进程地址空间
    char *shmaddr = (char*)shmat(shmid, nullptr, 0);

    // 以只写方式打开命名管道
    int fd = open(FIFO_FILE, O_WRONLY);
    if (fd < 0)
    {
        mylog(Fatal, "error string: %s, error code: %d", strerror(errno), errno);
        exit(FIFO_OPEN_ERR);
    }

    while(true)
    {
        cout << "Please Enter@ ";
        // 读取用户输入并直接写入共享内存
        fgets(shmaddr, 4096, stdin);

        // 向管道写入一个字符，通知接收端
        write(fd, "c", 1);
    }

    // 清理资源
    shmdt(shmaddr);  // 解除内存映射
    close(fd);  // 关闭管道
    return 0;
}